package domein;

import persistentie.PersistentieController;
import util.Datum;

public class DomeinController
{
/*Attributen*/	
	private Medewerkers medewerkers;
	private Autos autos;
	private Klanten klanten;
	//private Huurovereenkomsten huurovereenkomsten;
	
	private Medewerker ingelogdeMedewerker;
	private Huurovereenkomst huurovereenkomst;

/*Constructor*/
	public DomeinController()
	{
		this.ophalenKlanten();
		this.ophalenMedewerkers();
	}
	
/*Methodes*/
	//Huurovereenkomst
	public void maakNieuweHuurovereenkomst()
	{
		this.setHuurovereenkomst(new Huurovereenkomst(this.getIngelogdeMedewerker()));
	}
	public void selecteerHuurwagen(int keuze)
	{		
		this.huurovereenkomst.setDeAuto(autos.geefAuto(keuze));
	}
	public void selecteerKlant(int keuze)
	{
		this.huurovereenkomst.setDeKlant(klanten.geefKlant(keuze));
	}
	public void kiesExtraKosten()
	{
		
	}
	public void registreerHuurovereenkomst()
	{
		PersistentieController.getInstance().voegHuurovereenkomstToe(huurovereenkomst);
		//huurovereenkomsten.voegHuurovereenkomstToe(huurovereenkomst);
	}	

	public void logGebruikerIn(String naam, String wachtwoord)
	{
		Medewerker medewerker = this.getMedewerkers().loginMedewerker(naam, wachtwoord);
		this.setIngelogdeMedewerker(medewerker);
	}
	public void logGebruikerUit()
	{
		this.setIngelogdeMedewerker(null);
	}
	public void sluitApplicatie()
	{
		PersistentieController.getInstance().sluitVerbinding();
	}
	
	/*Attributen opvullen uit de database*/
	public void ophalenBeschikbareWagens(Datum beginDatum, Datum eindDatum)
	{
		this.autos = new Autos(PersistentieController.getInstance().geefAutos(beginDatum,eindDatum));
	}
	public void ophalenKlanten()
	{
		this.klanten = new Klanten(PersistentieController.getInstance().geefKlanten());
	}
	public void ophalenMedewerkers()
	{
		this.medewerkers = new Medewerkers(PersistentieController.getInstance().geefMedewerkers());
	}
	/*public String geefHuidigeWagenDetails()
	{
		String output=huidigeAuto.getAutoMerk() + " " + huidigeAuto.getAutoType();
		output=String.format("%S\n",output);//zet de autonaam in Hoofdletters
		output+="Categorie: " + huidigeAuto.getAutoCategorie() + "\n";
		output+="Afhaalplaats: " + huidigeAuto.getAfhaalplaats() + "\n";
		output+="Bouwjaar: " + huidigeAuto.getBouwjaar() + "\n";
		output+="Kmstand: " + huidigeAuto.getKmStand() + "\n";
		output+="Nummerplaat: " + huidigeAuto.getKenteken() + "\n";
		output+="Chassisnummer: " + huidigeAuto.getChassisnummer() + "\n";
		output+="Transmissie: " + huidigeAuto.isTransmissie() + "\n";
		output+="Brandstof: " + huidigeAuto.getBrandstof() + "\n";
		output+="Aantal deuren: " + huidigeAuto.getAantalDeuren() + "\n";
		output+="Airco: " + huidigeAuto.getAirco() + "\n";
		output+="Aantal zitplaatsen: " + huidigeAuto.getAantalZitplaatsen() + "\n";
		output+="Aantal stuks bagage: " + huidigeAuto.getAantalStuksBagage() + "\n";
		output+="Standaard dagprijs: " + huidigeAuto.getDagprijs() + "\n";
		output+="Waarborgcode: " + huidigeAuto.getWaarborgcode() + "\n";
		output+="Gemiddeld verbruik: " + huidigeAuto.getVerbruik() + "\n";
		return output;
	}
	public String geefHuidigeKlantDetails()
	{
		String output="Familienaam: " + huidigeKlant.getKlantAchternaam() + "\n";
		output+="Voornaam: " + huidigeKlant.getKlantVoornaam() + "\n";
		output+="Straat + huisnr: " + huidigeKlant.getAdres() + "\n";
		output+="Woonplaats: " + huidigeKlant.getPlaats() + "\n";
		output+="Postcode: " + huidigeKlant.getPostcode() + "\n";
		output+="Geboortedatum: " + huidigeKlant.getGeboortedatum() + "\n";
		output+="Geslacht: " + huidigeKlant.isGeslacht() + "\n";
		output+="Rijbewijs: " +huidigeKlant.getRijbewijs() + "\n";
		return output;
	}*/	

/*Getters & setters*/
	public Medewerker getIngelogdeMedewerker()
	{
		return this.ingelogdeMedewerker;
	}
	public Autos getAutos()
	{
		return autos;
	}
	public void setAutos(Autos autos)
	{
		this.autos = autos;
	}
	public Medewerkers getMedewerkers()
	{
		return medewerkers;
	}
	public void setMedewerkers(domein.Medewerkers gebruikers)
	{
		this.medewerkers = gebruikers;
	}
	public Huurovereenkomst getHuurovereenkomst()
	{
		return huurovereenkomst;
	}
	public void setHuurovereenkomst(Huurovereenkomst huidigeHuurovereenkomst)
	{
		this.huurovereenkomst = huidigeHuurovereenkomst;
	}
	public Klanten getKlanten()
	{
		return klanten;
	}
	public void setKlanten(Klanten klanten)
	{
		this.klanten = klanten;
	}

	public void setIngelogdeMedewerker(Medewerker ingelogdeMedewerker)
	{
		this.ingelogdeMedewerker = ingelogdeMedewerker;
	}

}
